#ifndef DX11DEMO_H
#define DX11DEMO_H


#include "Dx11Base.h"
#include <xnamath.h>
#include "Camera.h"
#include "ObjModel.h"
#include "ArcCamera.h"

#include <d3dx11effect.h>

class Dx11Demo : public Dx11Base
{
public:
  Dx11Demo(void);
  virtual ~Dx11Demo(void);

  bool LoadContent();
  void UnloadContent();

  void Update(float dt);
  void Render();

private:
  ID3DX11Effect* m_effect;

  ID3D11VertexShader* m_vertexShader;
  ID3D11PixelShader* m_pixelShader;
  ID3D11InputLayout* m_inputLayout;
  ID3D11Buffer* m_vertexBuffer;
  ID3D11Buffer* m_indexBuffer;
  ID3D11ShaderResourceView* m_colorMap;
  ID3D11SamplerState* m_colorMapSampler;

  unsigned int m_totalVerts;

    // camera
  ID3D11Buffer* m_viewBuffer;
  ID3D11Buffer* m_projBuffer;
  ID3D11Buffer* m_worldBuffer;
  XMMATRIX m_mat;
  XMMATRIX m_mat2;
  XMFLOAT4X4 m_projMatrix;
  XMFLOAT4X4 m_viewMatrix;
  
  
  //ArcCamera m_camera;
  Camera m_camera;
};


struct VertexPos
{
  XMFLOAT3 pos;
  XMFLOAT2 tex0;
};
#endif